package com.tedu.API.io;

import org.apache.commons.imaging.ImageFormats;
import org.apache.commons.imaging.ImageReadException;
import org.apache.commons.imaging.ImageWriteException;
import org.apache.commons.imaging.Imaging;
import org.junit.Test;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

/**
 * IO流---针对 图片
 *
 * 项目结构为Maven互联网型项目
 *    功能: 下载第三方jar包 【高手写好的类，压缩为jar文件---引入---使用类】
 *    第三方jar官方下载地址: 百度搜: mvn仓库
 *    https://mvnrepository.com/   搜索: commons-imaging
 *
 *    Apache Commons Imaging 包 : 针对IO流 图片传输流---封装
 *                                处理各种图像的外置包
 *                                读入、写出---JPEG,PNG,GIF,TIFF等
 *   研究 第三方  xxx.jar 百度搜: Apache Commons Imaging 使用
 *   类中存在大量的静态块，通过类名直接使用
 *
 *    使用 Apache Commons Imaging jar 【包---压缩文件叫法】
 *                                    【库---使用类叫法】
 */
public class ImageFile {
    /**
     * Imaging  提供一套读写图片流方法
     * 读: getBufferedImage() 可以通过File文件路径找到一个图片
     *                        并且打印图片信息【宽高】
     *     返回值: BufferedImage  缓冲图片流
     */
    @Test
    public void testIg() throws IOException, ImageReadException {
        //1.创建File文件类---找到图片: 路径地址+图片全称
        File file=new File("2.png");
        //2.调用静态方法-->Imaging图片类-->getBufferedImage() 获取图片信息
        BufferedImage bi= Imaging.getBufferedImage(file);
        //3.获取图片信息
        int height=bi.getHeight();
        int width=bi.getWidth();
        System.out.println("图片宽: "+width+"高: "+height);
    }

    /**
     * writeImage(读入图片，写出图片的位置，写出图片的格式，null)
     * 功能: 写出一个图片---先读入一张图片然后写出
     */
    @Test
    public void testWI() throws IOException, ImageReadException, ImageWriteException {
        //1.读入一张图片
        File file=new File("2.png");
        BufferedImage bi= Imaging.getBufferedImage(file);
        //2.写出图片的路径+全称
        File desc=new File("ma.png");
        //3.Imaging类---调用静态方法
        //ImageFormats类
        //version1  ImageFormat.format("png");  指定图片格式
        //version2  ImageFormats.PNG   静态属性
        Imaging.writeImage(bi,desc, ImageFormats.PNG,null);
        //                 读入，写出，指定图片格式，
        System.out.println("写出成功!");
    }
}
